import axios from "axios";
import querystring from 'querystring'


//定义一个返回数据的状态码校验函数 errorHandle
//可参考 https://www.kancloud.cn/yunye/axios/234845/
const errorHandle=(status,info)=>{
    switch (status){
        case 400: console.info("语义有误")
            break;
        case 401: console.info("服务器认证失败")
            break;

        case 403:
            console.info("服务器拒绝访问")
            break;
        case 404: console.info("地址有误")
            break;
        case 500: console.info("服务器报出异常")
            break;
        case 502: console.info("服务器无响应")
            break;
        default: console.info(info)
    }
}


// 创建axios对象的公共配置
const instance = axios.create({
    timeout: 1000*60*10,  // 超时时间：10分钟
    baseURL: 'http://127.0.0.1:8000/'
});

//拦截器
//发送数据之前调用
instance.interceptors.request.use(
    config=>{
        if(config.method==='POST'){
            config.data=querystring.stringify(config.data)
        }
            return config
    },
    error => {
        return Promise.reject(error)
    }
    );

// 返回数据之前
instance.interceptors.response.use(
    response=>{
        return response.status===200?Promise.resolve(response):Promise.reject(response)
    },
    error => {
        const {response}=error;
        errorHandle(response.status, response.info) //调用上述自定义的 状态码校验函数
    }
);

export default instance;